AWS タグの活用方法と命名ルールを考える
こんにちは。
ご機嫌いかがでしょうか。
"No human labor is no human error" が大好きなネクストモード株式会社 の吉井です。
今回はタグ付けの活用方法を考えてみます。
タグとは
そもそもタグとは何でしょうか?
AWS リソースを識別および整理するためのメタデータとして使用される単語やフレーズです。
タグはキーと 1 つのオプションの値で構成されています。
以下はタグ付けの例です。
タグ活用パターン
タグを活用する主なパターンを洗い出してみました。
- AWS リソースを識別/グルーピングする
- IAM ポリシーのアクセス制御として
- コストのグルーピング
AWS リソースを識別/グルーピングする
例えば EC2 が10台起動しているとします。
どの EC2 が自分のプロジェクトのものなのか、一覧できると便利です。
そうしたい際には以下のようなタグ付けを行います。
(タグの命名例は本エントリ後半に記述します)
タグ | 設定値 |
---|---|
キー | Project |
値 | プロジェクト名称 |
これをマネジメントコンソールなら タグエディター で検索します。
タグエディターで検索した例を示します。
この例だと「example プロジェクト」では EC2 が2台稼働していることがわかります。
タグをまとめて付ける
AWS リソース作成時にタグ付けすればよいのですが
付け忘れてしまった場合でも後からまとめてタグ付けすることが可能です。
以下のエントリが参考になると思います。
IAM ポリシーのアクセス制御として
IAM ポリシーで「特定タグが付けられているリソースは許可/拒否」といった権限設定が可能です。
以下のポリシーは、タグキー:project、タグ値:example の EC2 のみスタートストップ権限を持っているポリシーです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": {"ec2:ResourceTag/project": "example"} } }, { "Effect": "Allow", "Action": "ec2:DescribeInstances", "Resource": "*" } ] }
コストのグルーピング
コスト配分タグという機能が用意されています。
ユーザーが定義したタグごとにコストをグルーピングして表示する機能です。
マネジメントコンソールの Billing and Cost Management からコスト配分に使用するタグを指定します。
すぐには有効にならない(最大24時間)ので予め定義しておくことをおすすめします。
コスト配分タグごとの実際に発生したコストは Cost Explorer で見ることが可能です。
CSV でダウンロード出来るので MS Excel 等の使い慣れたアプリケーションで加工したほうが分析しやすいかもしれません。
以下の例だと、1行目太字になっている文字列がユーザー定義タグです。
https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html より引用
コスト配分タグについては AWS ブログが詳しいので参考にしてみてください。
コスト配分タグを用いた効率的なコスト管理
手動按分の必要性
コスト配分タグはコストのグルーピングを助けますが、全てのコストを明確に分離することはできないのでご注意ください。
ネットワーク通信量や特定リソースに限定しないサービス (CloudTrail、GuardDuty、CloudWatch など) の利用料金を按分したい場合には、人間が行うしかありません。
後々の揉め事にならないよう、事前に社内で按分ルールを決めておくことをおすすめします。
タグの命名ルール
タグを活用して管理をエクセレントにしたいところですが、命名ルールが決まっていないと上手に活用できないのでルールは事前に決めておきます。
タグの制限
タグにはいくつかの制限事項があります。
- リソースあたりのタグの最大数は 50 です。
- タグキーは、リソースごとにそれぞれ一意である必要があります。また、各タグキーに設定できる値は 1 つのみです。
- キーの最大長 – 128 文字 (Unicode) (UTF-8)
- 値の最大長 – 256 文字 (Unicode) (UTF-8)
- EC2 ではタグ内に任意の文字を使用できますが、他のサービスでは制限があります。すべてのサービスで使用できる文字は、UTF-8 で表現できる文字、数字、およびスペースに加えて、 + - = . _ : / @ です。
- タグのキーと値は大文字と小文字が区別されます。
- aws: プレフィックスは AWS 専用として予約されています。
命名ルール例
タグ命名ルール例を示します。
Technical Tags
タグキー | タグ値 |
---|---|
Name | 命名規則で定めたリソース名称を入力 |
Environment | 環境名 (prod/stg/dev など) |
SystemName | システムを識別可能な文字列 |
ApplicationID | 稼働しているアプリケーションを識別する文字列 |
ApplicationRole | アプリケーション機能 (Web/DB/batch など) |
Automation
何らかのオペレーションを自動化している場合はタグを活用して対象システムやタスク実行時間を記述します。
以下は例です。
タグキー | タグ値 | パターン |
---|---|---|
EC2DailyStartTime | 0800 | EC2 自動起動を行っている場合、0800 など時刻を指定 |
EC2DailyStopTime | 2100 | EC2 自動停止を行っている場合、2100 など時刻を指定 |
SSM-Inventory | true or false | Systems Manager インベントリを収集する対象を指定 |
SSM-patch-os | Windows / AL2 など | Patch Manager でパッチ適用を行う対象を指定 |
backup | daily-03 | AWS Backup などのバックアップ対象を指定。頻度世代を含めてもよい |
ビジネスタグ
コストセンター、プロジェクト、顧客などの識別に活用します。
タグキー | タグ値 |
---|---|
Project | プロジェクト名を識別する文字列 |
CostCenter | コストを負担する部門やチームを識別する文字列 |
Owner | 当該リソースに関する問い合わせを誰にすればよいか、管理者や PM の氏名を入力 |
Customer | リソースを使用している顧客名 |
AWS が付与したタグ
aws: で始まるタグキーは AWS サービスがタグ付けしたタグです。
ユーザーが aws: で始まるタグキーを作成することはできません。
すでにタグ付けされているタグを削除することもできません。
リソースあたり 50 という最大数には影響しません。
まとめ
タグを制す者はリソース管理を制す、とまでは言いませんが、タグをフル活用することで管理上の利便性は向上すると思います。
後回しにされがちなタグ付けですが、効果的なタグ付けを覚えたいと思います。
参考
AWS リソースのタグ付け
AWS Tagging Strategies
タグエディタの使用
コスト配分タグを用いた効率的なコスト管理
リソースタグを使用した AWS リソースへのアクセスの制御
以上、吉井 亮 がお届けしました。